La arquitectura orientada a servicios (SOA, siglas del inglés Service Oriented Architecture) es un estilo de arquitectura de TI que se apoya en la orientación a servicios. La orientación a servicios es una forma de pensar en servicios, su construcción y sus resultados. Un servicio es una representación lógica de una actividad de negocio que tiene un resultado de negocio específico (ejemplo: comprobar el crédito de un cliente, obtener datos de clima, consolidar reportes de perforación)
El estilo de arquitectura SOA se caracteriza por:
- Estar basado en el diseño de servicios que reflejan las actividades del negocio en el mundo real. Estas actividades forman parte de los procesos de negocio de la compañía.
- Representar los servicios utilizando descripciones de negocio para asignarles un contexto de negocio.
- Tener requerimientos de infraestructura específicos y únicos para este tipo de arquitectura. En general se recomienda el uso de estándares abiertos para la interoperabilidad y transparencia en la ubicación de servicios.
- Estar implementada de acuerdo con las condiciones específicas de la arquitectura de TI en cada compañía.
- Requerir un gobierno fuerte sobre las representación e implementación de servicios.
- Requerir un conjunto de pruebas que determinen que es un buen servicio.[1]
El desarrollo e implementación de una arquitectura SOA se rige por los principios descritos en el manifiesto SOA. Por otra parte la aplicación de la orientación a servicios se divide en 2 grandes etapas:
- Análisis orientado a servicios (Modelado de servicios)
- Diseño orientado a servicios, El diseño orientado a servicios cuenta con 8 principios de diseño que se aplican sobre cada uno de los servicios modelados, esto principios de diseño son:
- Contrato de servicio estandarizado: Los contratos de servicio cumplen con los mismos estándares de diseño.[2]
- Bajo acoplamiento: Los servicios evitan acoplarse a la tecnología que los implementa y a su vez reducen el acoplamiento impuesto a los consumidores.[3]
- Abstracción: Los contratos presentan la información mínima requerida y la información de los servicios se limita a los expuesto en el contrato.[4]
- Reusabilidad: Los servicios expresan y contienen lógica de negocio independiente del consumidor y su entorno, por lo tanto se convierten en activos de la empresa.[5]
- Autonomía: Los servicios deben tener un gran control de los recursos tecnológicos sobre los cuales están implementados.[6]
- Sin estado: Los servicios reducen el consumo de recursos al delegar el manejo de estados (sesiones) cuando se requiera.[7]
- Garantizar su descubrimiento: Lo servicios cuentan con metadata que permite descubrirlos e interpretar el servicio en términos de negocio.[8]
- Preparado para ser usado en composiciones: Los servicios pueden hacer parte de una composición sin importar el tamaño y complejidad de la misma.[9]